package com.zts.base.data;

import com.zts.base.entity.DataEntity;
import com.zts.base.page.PageBound;

import java.util.List;
import java.util.Map;

/**
 * Created by Zhangkh on 2017/6/2.
 */
public interface CrudService<T extends DataEntity> {

    /**
     * 根据id获取单条数据，返回的数据中包含有效标志。
     *
     * @param id
     * @return
     */
    public T get(Long id);


    /**
     * 根据关键key获取数据，联合主键 或者是 id，可能返回多条，多条中有些是无效的。
     *
     * @param entity
     * @return
     */
    public List<T> getByEntity(T entity);

    /**
     * 根据条件获取符合条件的对象列表。包含有效标志。
     *
     * @param conditions
     * @return
     */
    public List<T> getByCondition(Map<String, Object> conditions);

    /**
     * 查询列表数据，分页，like条件过滤
     *
     * @param entity
     * @return
     */
    public List<T> getList(T entity, PageBound pageBound);

    /**
     * 保存数据（插入或更新）返回保存后的对象
     *
     * @param entity
     */
    public T insert(T entity);

    /**
     * 保存数据（插入或更新）
     *
     * @param entity
     */
    public int update(T entity);

    /**
     * 删除数据
     *
     * @param entity
     */
    public int delete(T entity);

    /**
     * 保存数据（插入或更新，根据isnew来判断）
     *
     * @param entity
     */
    public T save(T entity);

}
